//package com.hippo.provider.service.impl;
//
//import com.alibaba.fastjson.JSON;
//import com.hippo.core.pojo.dto.RuleDTO;
//import com.hippo.core.pojo.vo.result.BaseResult;
//import com.hippo.drools.utils.KieUtils;
//import com.hippo.provider.service.RuleEngineService;
//import lombok.extern.slf4j.Slf4j;
//import org.kie.api.runtime.rule.FactHandle;
//import org.springframework.stereotype.Service;
//import org.springframework.util.CollectionUtils;
//import org.springframework.util.StringUtils;
//
//import java.util.List;
//
///**
// * @ClassName RuleEngineSerrvice
// * @Description TODO 规则引擎服务
// * @Author tangxl
// * @create 2023-05-08 11:24
// **/
//@Service
//@Slf4j
//public class RuleEngineServiceImpl implements RuleEngineService {
//    /**
//     * 插入规则
//     *
//     * @param rule 规则参数
//     */
//    @Override
//    public void executeAddRule(RuleDTO rule) {
//        log.info("参数数据:" + rule.getId() + ";" + rule.getSign());
//        log.info("插入规则");
//    }
//
//    /**
//     * 移除规则
//     *
//     * @param rule 规则参数
//     */
//    @Override
//    public void executeRemoveRule(RuleDTO rule) {
//        log.info("参数数据:" + rule.getId() + ";" + rule.getSign());
//        log.info("移除规则");
//    }
//
//    @Override
//    public BaseResult param(List<RuleDTO> ruleDTOList) {
//        if(CollectionUtils.isEmpty(ruleDTOList)){
//            return BaseResult.fail("入参不能为空");
//        }
//        ruleDTOList.forEach(ruleDTO -> {
//            if(ruleDTO.getClzss() == null){
//                BaseResult.fail("Fact对象名称不能为空");
//            }
//            if(StringUtils.isEmpty(ruleDTO.getJsonFact())){
//                BaseResult.fail("Fact对象json串不能为空");
//            }
//            // Fact对象json串转换为Fact对象
//            try {
//                Object o = JSON.parseObject(ruleDTO.getJsonFact(), ruleDTO.getClzss().getClass());
//                KieUtils.getKieSession().insert(o) ;
//            } catch (Exception e) {
//                throw new RuntimeException("Fact对象json串转换为Fact对象异常");
//            }
//        });
//        // 返参
//        int i = KieUtils.getKieSession().fireAllRules();
//        return BaseResult.ok("规则引擎添加成功: " + i + "条规则被触发",ruleDTOList);
//    }
//}
